package proyecto.modelo;
import java.util.StringTokenizer;

public class Mensaje {

	private String nombres;
	private String DNI;
	private String comentarios;

	public Mensaje(String nombres, String dNI, String comentarios) {
		super();
		this.nombres = nombres;
		DNI = dNI;
		this.comentarios = comentarios;
	}

	public String getNombres() {
		return nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getDNI() {
		return DNI;
	}

	public void setDNI(String dNI) {
		DNI = dNI;
	}

	public String getComentarios() {
		return comentarios;
	}

	public void setComentarios(String comentarios) {
		this.comentarios = comentarios;
	}

	public Boolean verificarCampos() throws Exception {
		Boolean bOk = false;
		if (this.nombres.trim().length() == 0 || this.DNI.trim().length() == 0
				|| this.comentarios.trim().length() == 0) {
			throw new Exception(
					"Los campos nombres, DNI y comentarios son obligatorios");
		} else {
			bOk = true;
		}
		return bOk;
	}

	public Boolean verificarNombre() throws Exception {
		Boolean bOk = false;

		StringTokenizer st = new StringTokenizer(this.nombres);

		if (st.countTokens() >= 2) {
			bOk = true;
		} else {
			// bOk=false;
			throw new Exception(
					"El nombre debe contener por lo menos 2 palabras");
		}

		return bOk;
	}

	public Boolean verificarDNI() throws Exception {
		Boolean bOk = false;

		if (this.DNI.length() == 8) {
			try {
				Integer.parseInt(this.DNI);
				bOk = true;
			} catch (NumberFormatException nfe) {
				throw new Exception("DNI debe contener datos numericos");
			}

		} else {
			throw new Exception("Longitud debe ser 8");
		}

		return bOk;
	}

	public Boolean verificarComentario() throws Exception {
		Boolean bOk = false;
		if (this.comentarios.length() <= 140) {
			bOk = true;
		} else {
			throw new Exception("Longitud no puede ser mayor de 140");
		}
		return bOk;
	}

	public Boolean verificarMalicioso() throws Exception {
		Boolean bOk = true;

		String malicioso[] = new String[5];
		malicioso[0] = "<SCRIPT>";
		malicioso[1] = "</SCRIPT>";
		malicioso[2] = "WINDOWS.LOCATION";
		malicioso[3] = "WINDOWS.REDIRECT";
		malicioso[4] = "COOKIE";

		int f;
		for (f = 0; f < 5; f++) {
			if (this.comentarios.toUpperCase().indexOf(malicioso[f]) > -1) {
				bOk = false;
				break;
			}
		}

		if (bOk == false) {
			throw new Exception("Comentario contiene una palabra maliciosa");
		}

		/*
		 * if (this.comentarios.indexOf("cookie")==-1) { bOk= true; } else {
		 * throw new Exception("Comentario contiene una palabra maliciosa"); }
		 */

		return bOk;
	}

	public Boolean verificarGroserias() throws Exception {
		Boolean bOk = true;

		String groserias[] = new String[5];
		groserias[0] = "GROSE01";
		groserias[1] = "GROSE02";
		groserias[2] = "GROSE03";
		groserias[3] = "GROSE04";
		groserias[4] = "GROSE05";

		int f;
		for (f = 0; f < 5; f++) {
			if (this.comentarios.toUpperCase().indexOf(groserias[f]) > -1) {
				this.comentarios.replace("groseria1", "*****");
			}
		}

		/*
		 * if (this.comentarios.indexOf("groseria1")==-1) {
		 * this.comentarios.replace("groseria1", "*****"); bOk= true; }
		 */

		return bOk;
	}

	public void Registrar() throws Exception {
		verificarCampos();
		verificarNombre();
		verificarDNI();
		verificarComentario();
		verificarMalicioso();
		verificarGroserias();

		// registrar();

	}

}
